//
//  JWKStatusListViewModel.swift
//  Weibo
//
//  Created by 姜维克 on 16/5/25.
//  Copyright © 2016年 姜维克. All rights reserved.
//

import UIKit

class JWKStatusListViewModel: NSObject {

    lazy var statuses : [JWKStatusViewModel] = [JWKStatusViewModel]()
    
    
    static let sharedStatusListViewModel : JWKStatusListViewModel = JWKStatusListViewModel()
    
    override init() {
        super.init()
        
    }
    
    
    
    
}


extension JWKStatusListViewModel{
    //MARK:加载网络数据
    func loadStatusesData(isPulling:Bool, finished:(isSuccess:Bool)->()){
        
//        由于since_id和max_id是互斥的,只能有一条起作用,所以要判断是否为下拉刷新,如果是下拉,就让since_id起作用,反之上拉加载更多,让max_id起作用
//        为了方便传递下拉正在转动的isPulling,需要自定义刷新控件
        
        var since_id = self.statuses.first?.status?.id ?? 0
        var max_id = self.statuses.last?.status?.id ?? 0
        
        if isPulling{
            max_id = 0
        }else{
            since_id = 0
        }
        
        
        JWKNetworkTools.sharedTools.loadHomeStatusesData(max_id, since_id: since_id) { (responseObject, error) in
        
            if error != nil{
                //失败
                finished(isSuccess: false)
                
                return
            }
            
            //请求到了网络数据
            //如果不能转成字典类型
            guard let dict = responseObject as? [String : AnyObject] else{
                //失败
                finished(isSuccess: false)
                return
            }
            
            //可以转成字典类型---取出statuses对应的数组
            //如果不能取出字典数组
            guard let statusesDictArray = dict["statuses"] as? [[String:AnyObject]] else{
                //失败
                finished(isSuccess: false)
                return
            }
            
            
//            if statusesDictArray.count <= 0 {
//                print("没有数据")
//                return
//            }
            
            //            遍历字典数组
            
            //创建临时数组---模型数组换成--视图模型数组
            var tempArr = [JWKStatusViewModel]()
            for item in statusesDictArray{
                //字典转模型
                let status = JWKStatus.init(dict: item)
                let statusViewModel = JWKStatusViewModel(status: status)
                
                tempArr.append(statusViewModel)
            }
            
            //赋值
            //如果是刷新了新数据,新数据在前,老数据在后面
            if isPulling{
                
                self.statuses = tempArr + self.statuses
            }else{
                //如果是下拉加载更多,就老数据在前,更老的数据在后
                self.statuses = self.statuses + tempArr
            }
            
            
            print(self.statuses.count,tempArr.count)
            
            //刷新tableView
            finished(isSuccess: true)
        }
        
    }
    
}
